#ifndef __IMPACT_OBJ_H__
#define __IMPACT_OBJ_H__

class ImpactObj
{
public:
	ImpactObj(int id, bool impactable);
	virtual ~ImpactObj();

	virtual ImpactObj* CalcImpact(Point& newPos);
	virtual ImpactObj* CalcIntersection();

	void RegisterImpactObj();
	void UnRegisterImpactObj();
	int GetID();

protected:
	void SetAdditionFlitObj(ImpactObj* pAdditionFlitObj);

public:
	//interface
	virtual float GetRange() = 0;
	virtual float GetHeadingRadian() = 0;
	virtual Point GetPos() = 0;

	//selectable interface
	virtual bool Impacted();

private:
	int m_id;
	ImpactObj* m_pAdditionFiltObj;
};

#endif